// pojo/Category.java
package com.itheima.bigevent.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.groups.Default;
import lombok.Data;
import java.time.LocalDateTime;


@Data
public class Category {
    @NotNull(groups = Update.class)    // 必须要传
    private Integer id; //主键ID
//    @NotEmpty(groups = {Add.class,Update.class})  // 必须要传，同时不能为空字符串
    @NotEmpty  // extends Default继承后，默认Default分组，包含 Add、Update分组
    private String categoryName;//分类名称
//    @NotEmpty(groups = {Add.class,Update.class})
    @NotEmpty // extends Default继承后，默认Default分组，包含 Add、Update分组
    private String categoryAlias;//分类别名
    private Integer createUser;//创建人ID
    @JsonFormat(pattern = "yyyy-mm-dd HH:mm:ss")
    private LocalDateTime createTime;//创建时间
    @JsonFormat(pattern = "yyyy-mm-dd HH:mm:ss")
    private LocalDateTime updateTime;//更新时间

    /*  进一步优化
    *   问题：如果某个字段的校验项非常多（多达10几个），逐个填写，非常麻烦，于是引入validation可以继承。
    *   1、如果说某个校验项没有指定分组，默认属于 Default分组；
    *   2、分组之间可以继承， A extends B , 那么 A中拥有B中所有的校验项
    * */
    // 定义Validation分组
    // 添加组
    public interface Add extends Default {
    }

    // 更新组
    public interface Update extends Default {
    }
}
